#include <iostream>
using namespace std;

// max1 求数组 a[] 中元素的最大值
int max1(int a[], int n)
{
	int t = 0;
	for (int i = 0; i < n; i++)
		if (a[i] > a[t])
			t = i;
	return a[t] + 0;
}

// max2 求数组 a[] 中元素的最大值
int &max2(int a[], int n)
{
	int t = 0;
	for (int i = 0; i < n; i++)
		if (a[i] > a[t])
			t = i;
	return a[t]; // 不能return a[t]+0 , 返回值非引用
}

// sum 求数组 a[] 中元素的和
int &sum(int a[], int n)
{
	int s = 0;
	for (int i = 0; i < n; i++)
		s += a[i];
	return s;
}

int main()
{
	cout << endl
		 << "学号：3170608043，姓名：石英钰" << endl
		 << endl
		 << "p126【例3-12】使用引用作为函数的返回值" << endl
		 << endl;
	int a[10] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10};
	int m1 = max1(a, 10);
	int m2 = max2(a, 10); // 使用 int 型变量接收函数返回的 int& 型的值
	int &m3 = max2(a, 10);// 使用 int& 型变量接收函数返回的 int& 型的值
	int &m4 = sum(a, 10);
	cout << "m1=" << m1 << endl;
	cout << "m2=" << m2 << endl;
	cout << "m3=" << m3 << endl;
	cout << "m4=" << m4 << endl;
	m3 += 10; // 可通过引用变量修改返回变量的值
	max2(a, 10) -= 100;
	cout << sum(a, 10) << endl;
	return 0;
}